// 题意：给定两个box，分别装了A个球和B个球，可以将一个盒子里的球倒到另一个盒子里，
// 		 但必须倒和另一个盒子球数一样多的球。问最短次数。
//
// 题解：bfs。但是对于某些状态正向的bfs可能会枚举很多无用状态。
// 		 考虑大部分情况，最后一步肯定是两个盒子球数相等，所以也可以反过来bfs。
// 		 当两个盒子球数和是2的幂次的时候，正向bfs（这样可以在log(sum)次出结果），
// 		 否则就反向bfs，不至于枚举过多无用状态。
//
#include <iostream>
#include <cmath>
#include <algorithm>
#include <set>
#include <utility>
#include <queue>

typedef unsigned int value_type;

struct pair_move { value_type a; int move; };

value_type pow2[44];

std::queue<pair_move> q;
std::set<value_type> vis;

void init_pow2()
{
	pow2[0] = 1;
	for (int i = 1; i < 44; i++) pow2[i] = pow2[i-1] * 2;
}

bool is_pow2(value_type x)
{
	return !(x & (x-1));
}

int main()
{
	init_pow2();
	value_type sa, sb;
	std::cin >> sa >> sb;
	value_type sum = sa + sb;
	if (!sa || !sb) { std::cout << "0\n"; return 0; }
	if (sum & 1) { std::cout << "-1\n"; return 0; }
	if (sa > sb) std::swap(sa, sb);

	int ans = -1;
	if (is_pow2(sum)) {
		pair_move first; first.a = sa; first.move = 0;
		q.push(first);
		vis.insert(first.a);
		while (!q.empty()) {
			pair_move now = q.front(); q.pop();
			if (now.a == 0) { ans = now.move; break; }
			if (now.a * 2 == sum) { ans = now.move + 1; break; }
			pair_move tmp = now;
			value_type a = tmp.a, b = sum - tmp.a;
			int k = std::log(double(a + b)/double(a)) / std::log(2.0) - 1;
			//std::cout << a << ' ' << b << ' ' << k << '\n';
			if (!k) k = 1;
			tmp.a *= pow2[k];
			if (tmp.a * 2 > sum) tmp.a = sum - tmp.a;
			if (vis.find(tmp.a) == vis.end()) {
				tmp.move += k;
				q.push(tmp);
				vis.insert(tmp.a);
			}
		}
	} else {
		pair_move first; first.a = sum/2; first.move = 0;
		q.push(first);
		vis.insert(first.a);
		while (!q.empty()) {
			pair_move now = q.front(); q.pop();
//			std::cout << now.a << ' ' << sum - now.a << '\n';
			if (now.a == sa) { ans = now.move + 1; break; }
			pair_move tmp = now; tmp.move++;
			if (!(now.a & 1)) {
				tmp.a = now.a / 2;
				if (vis.find(tmp.a) == vis.end()) {
					q.push(tmp);
					vis.insert(tmp.a);
				}
			}
			if (!((sum - now.a) & 1)) {
				tmp.a = (sum - now.a) / 2;
				if (tmp.a * 2 > sum) tmp.a = sum - tmp.a;
				if (vis.find(tmp.a) == vis.end()) {
					q.push(tmp);
					vis.insert(tmp.a);
				}
			}
		}
	}

	std::cout << ans << '\n';
}

